package com.dimples.dd.system.model.entity;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.dimples.dd.tenant.core.dataobject.TenantBaseDO;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.EqualsAndHashCode;

import java.time.LocalDateTime;

/**
 * 通知公告表
 */
@Schema(description="通知公告表")
@Data
@EqualsAndHashCode(callSuper=true)
@TableName(value = "system_notice")
public class SystemNoticeDO extends TenantBaseDO {
    @TableId(value = "id", type = IdType.AUTO)
    @Schema(description="")
    private Long id;

    /**
     * 通知标题
     */
    @TableField(value = "title")
    @Schema(description="通知标题")
    private String title;

    /**
     * 通知内容
     */
    @TableField(value = "content")
    @Schema(description="通知内容")
    private String content;

    /**
     * 通知类型（字典code：notice_type）
     */
    @TableField(value = "`type`")
    @Schema(description="通知类型（字典code：notice_type）")
    private Integer type;

    /**
     * 通知等级（字典code：notice_level）
     */
    @TableField(value = "`level`")
    @Schema(description="通知等级（字典code：notice_level）")
    private String level;

    /**
     * 目标类型（1: 全体, 2: 指定）
     */
    @TableField(value = "target_type")
    @Schema(description="目标类型（1: 全体, 2: 指定）")
    private Integer targetType;

    /**
     * 目标人ID集合（多个使用英文逗号,分割）
     */
    @TableField(value = "target_user_ids")
    @Schema(description="目标人ID集合（多个使用英文逗号,分割）")
    private String targetUserIds;

    /**
     * 发布人ID
     */
    @TableField(value = "publisher_id")
    @Schema(description="发布人ID")
    private Long publisherId;

    /**
     * 发布状态（0: 未发布, 1: 已发布, -1: 已撤回）
     */
    @TableField(value = "publish_status")
    @Schema(description="发布状态（0: 未发布, 1: 已发布, -1: 已撤回）")
    private Integer publishStatus;

    /**
     * 发布时间
     */
    @TableField(value = "publish_time")
    @Schema(description="发布时间")
    private LocalDateTime publishTime;

    /**
     * 撤回时间
     */
    @TableField(value = "revoke_time")
    @Schema(description="撤回时间")
    private LocalDateTime revokeTime;
}